﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>PluginInfo</title>
<meta http-equiv="Content-Type" Content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../styles/styles.css">
<script language="javascript" src='../links.js' type="text/javascript"></script>
</head>
<body>

<h1>PluginInfo</h1>
<div class=navbar>
<a href="../index.html">главная</a> |
<a href="index.html">структуры</a> |
<a href="../basicapi/index.html">Basic API</a>
</div>

<div class=shortdescr>
Структура <code>PluginInfo</code> используется для возвращения Far Manager'у информации о плагине в функции <a href="../exported_functions/getplugininfow.html">GetPluginInfoW</a>.
</div>

<pre class=syntax>
struct PluginInfo
{
  size_t StructSize;
  PLUGIN_FLAGS Flags;
  struct PluginMenuItem DiskMenu;
  struct PluginMenuItem PluginMenu;
  struct PluginMenuItem PluginConfig;
  const wchar_t *CommandPrefix;
};
</pre>

<h3>Элементы</h3>
<div class=descr>
  <div class=dfn>StructSize</div>
    <div class=dfndescr>Это поле должно содержать размер структуры <code>PluginInfo</code>. Перед использованием структуры плагин должен заполнить поле.</div>
  <div class=dfn>Flags</div>
    <div class=dfndescr>Комбинация следующих значений (тип <a name="PLUGIN_FLAGS">PLUGIN_FLAGS</a>).
    <table class="cont">
    <tr class="cont"><th class="cont" width="40%">Флаг</th><th class="cont" width="60%">Описание</th></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="PF_PRELOAD">PF_PRELOAD</a></td>
    <td class="cont" width="60%">Отменить кеширование параметров плагина и заставить Far Manager всегда загружать плагин в память при старте. Должно быть указано,
    если необходимо изменять строки в меню "Диск", "Команды внешних модулей" или "Конфигурация модулей" динамически. Этот флаг уменьшает эффективность использования памяти.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="PF_DISABLEPANELS">PF_DISABLEPANELS</a></td>
    <td class="cont" width="60%">Не показывать плагин в меню "Команды внешних модулей", вызываемом из панелей.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="PF_EDITOR">PF_EDITOR</a></td>
    <td class="cont" width="60%">Показывать плагин в меню "Команды внешних модулей", вызываемом из редактора Far Manager.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="PF_VIEWER">PF_VIEWER</a></td>
    <td class="cont" width="60%">Показывать плагин в меню "Команды внешних модулей", вызываемом из вьюера Far Manager.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="PF_DIALOG">PF_DIALOG</a></td>
    <td class="cont" width="60%">Показывать плагин в меню "Команды внешних модулей", вызываемом из диалога Far Manager.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="PF_FULLCMDLINE">PF_FULLCMDLINE</a></td>
    <td class="cont" width="60%">Заставляет Far Manager передавать плагину всю командную строку вместе с префиксом <code>CommandPrefix</code>.
    Обязательно использовать этот флаг, если плагин умеет обрабатывать несколько префиксов <code>CommandPrefix</code>.</td></tr>
    <tr class="cont"><td class="cont" width="40%"><a name="PF_NONE">PF_NONE</a></td>
    <td class="cont" width="60%">Нулевой флаг.</td></tr>
    </table></div>
  <div class=dfn>DiskMenu</div>
    <div class=dfndescr>Если плагин добавляет строки в меню "Диск", это поле должно быть равным заполненной структуре <a href="pluginmenuitem.html">PluginMenuItem</a>.</div>
  <div class=dfn>PluginMenu</div>
    <div class=dfndescr>Если плагин добавляет строки в меню "Команды внешних модулей", это поле должно быть равным заполненной структуре <a href="pluginmenuitem.html">PluginMenuItem</a>.</div>
  <div class=dfn>PluginConfig</div>
    <div class=dfndescr>Если плагин добавляет строки в меню "Конфигурация модулей", это поле должно быть равным заполненной структуре <a href="pluginmenuitem.html">PluginMenuItem</a>.</div>
  <div class=dfn>CommandPrefix</div>
    <div class=dfndescr>Плагин может указать в этом поле строку префиксов командной строки, которые будут использоваться для перехвата команд Far Manager.
    Например, если плагин передал здесь адрес строки <code>ftp</code> и пользователь ввёл в командной строке что-то, начинающееся с <code>ftp:</code>,
    то функция <a href="../exported_functions/openw.html">OpenW</a> будет вызвана с параметром <a href="../exported_functions/openw.html#OPEN_COMMANDLINE">OPEN_COMMANDLINE</a>.<br>
    Если предполагается, что плагин будет обрабатывать несколько командных префиксов, то необходимо указать префиксы, разделённые двоеточием. Например,
    плагин если обрабатывает префиксы <code>edit:</code>, <code>goto:</code> и <code>view:</code>, то строка должна быть такой:<pre class=code>CommandPrefix=L"edit:view:goto";</pre>
    Если вы не хотите добавлять команды к Far Manager'у, установите этот параметр в <code>NULL</code>.</div>
</div>

<h3>Замечания</h3>
<div class=descr>
<ol>
<li>Все передаваемые в этой структуре данные должны быть правильными после возвращения из <a href="../exported_functions/getplugininfow.html">GetPluginInfoW</a>,
таким образом вы не должны использовать автоматически создаваемые переменные. Используйте статические или глобальные переменные.</li>
<li>Структура, передаваемая функции <a href="../exported_functions/getplugininfow.html">GetPluginInfoW</a>, уже заполнена 0.</li>
</ol>
</div>

<div class=see>Смотрите также:</div>
<div class=seecont>
<a href="index.html">структуры</a>,
<a href="pluginmenuitem.html">PluginMenuItem</a>
</div>

</body>
</html>